#include"user.h"

//密码功能

/******************************************************************************************************
 * 函数功能：输入密码，进入管理员界面 密码的输入与验证
 * 函数名：void password(int *n,int *thread_exit_flag,int *continueDisplay,int *change_picture_or_video)
 * 形参：int *n,int *thread_exit_flag,int *continueDisplay,int *change_picture_or_video
 * 返回值：void
 ******************************************************************************************************/
void password(int *n,int *thread_exit_flag,int *continueDisplay,int *change_picture_or_video)
{
    char buff[7] = {'1','2','3','4','5','6','\0'};// 初始化 buff 为包含字符 '1' 到 '6' 的字符串
    char buff_password[7] = {0};// 初始化 buff_password 为一个空字符串，准备存储密码
    int i = 0,yc = 0;
    buff_password[7] = '\0'; // 添加字符串结束符
    show_password();
    
    while (1)
    {
        get_xy();
        while (1)
        {
            if (Y < 100 && X < 100) 
            {
                *n = 0; // 返回主页面
                *thread_exit_flag = 0; // 设置启动标志
                *continueDisplay = 1;
                return;
            }
            
            if (X < 267 && Y > 400 )
            {
                if (strcmp(buff,buff_password) == 0)
                {
                    
                    printf("Password correct\n");
                    *n = 3;
                    return;
                }
                else
                {
                    i = 0;
                    memset(buff_password,'\0',sizeof(buff_password));
                    printf("password is null\n");
                }
            }

            if ( i < 6)
            {
                if (Y < 240 && Y >165 && X < 267) 
                {
                    printf("1\n");
                    buff_password[i] = '0' + 1;
                    i++;
                }
                if (Y > 240 && Y < 320 && X < 267) 
                {
                    printf("4\n");
                    buff_password[i] = '0' + 4;
                    i++;
                }
                if (Y <400 && Y > 320 && X < 267) 
                {
                    printf("7\n");
                    buff_password[i] ='0' + 7;
                    i++;
                }

                if (Y < 240 && Y >165 && X > 267 && X < 530) 
                {
                    printf("2\n");
                    buff_password[i] = '0' + 2;
                    i++;
                }
                if (Y > 240 && Y < 320 &&  X > 267 && X < 530)
                {
                    printf("5\n");
                    buff_password[i] = '0' +5;
                    i++;
                }
                if (Y <400 && Y > 320 &&  X > 267 && X < 530)
                {
                    printf("8\n");
                    buff_password[i] = '0' +8;
                    i++;
                }
                if (X > 267 && X < 530 && Y > 400)
                {
                    printf("0\n");
                    buff_password[i] = '0' + 0;
                    i++;
                }

                if (Y < 240 && Y >165 &&  X > 530) 
                {
                    printf("3\n");
                    buff_password[i] = '0' + 3;
                    i++;
                }
                if (Y > 240 && Y < 320 && X > 530)
                {
                    printf("6\n");
                    buff_password[i] = '0' +6;
                    i++;
                }
                if (Y < 400 && Y > 320 && X > 530)
                {
                    printf("9\n");
                    buff_password[i] = '0' + 9;
                    i++;
                }
                
                if (X > 530 && Y > 400 )
                {
                    if (i >= 0)
                    {
                        //回退
                        if (i == 0)
                        {
                            buff_password[i] = '\0';
                            printf("i = 0");
                        }
                        else
                        {
                            buff_password[i-1] = '\0';
                            printf("i--\n");
                            i = i - 1;
                        }
                    }
                }
            }


            if (X > 700 && Y < 150 && Y >80)
            {
                if (yc == 0)
                {
                    yc = 1;
                    lcd_init();
                    show_bmp("password2.bmp");
                    lcd_uninit();
                    
                }
                else 
                {
                    yc = 0;
                    show_password();
                    
                }
                
            }
                
            if (yc == 0)
            {
                char password[7] = {0};
                // strcpy(password,buff_password);
                for (int j = 0; j < i; j++)
                {
                    password[j] = '*';
                }
                //初始化Lcd
                struct LcdDevice* lcd = init_lcd("/dev/fb0");
                            
                //打开字体	
                font *f = fontLoad("/usr/share/fonts/DroidSansFallback.ttf");

                //字体大小的设置
                fontSetSize(f,60);

                //创建一个画板（点阵图）
                bitmap *bm1 = createBitmapWithInit(600,50,4,getColor(0,255,255,255)); 

                fontPrint(f,bm1,0,0,password,getColor(0,255,0,0),0);

                //把字体框输出到LCD屏幕上
                show_font_to_lcd(lcd->mp,30,95,bm1);

                memset(password,'\0',sizeof(password));

                //关闭字体，关闭画板
                fontUnload(f);
                destroyBitmap(bm1); 
            }
            else
            {
                yc = 1;
                lcd_init();
                show_bmp("password2.bmp");
                lcd_uninit();
                char password[7] = {0};
                strcpy(password,buff_password);

                //初始化Lcd
                struct LcdDevice* lcd = init_lcd("/dev/fb0");
                            
                //打开字体	
                font *f = fontLoad("/usr/share/fonts/DroidSansFallback.ttf");

                //字体大小的设置
                fontSetSize(f,60);

                //创建一个画板（点阵图）
                bitmap *bm1 = createBitmapWithInit(600,50,4,getColor(0,255,255,255)); 

                fontPrint(f,bm1,0,0,password,getColor(0,255,0,0),0);

                //把字体框输出到LCD屏幕上
                show_font_to_lcd(lcd->mp,30,95,bm1);

                memset(password,'\0',sizeof(password));

                //关闭字体，关闭画板
                fontUnload(f);
                destroyBitmap(bm1); 
            }
            break;
        }
    }
}

//下面是管理员功能

/**********************************************************************************************************************************
 * 函数功能：管理员功能
 * 函数名：void user_function(int *n,int *thread_exit_flag,int *continueDisplay,int *change_picture_or_video,int *change_dir_index)
 * 形参：int *n,int *thread_exit_flag,int *continueDisplay,int *change_picture_or_video,int *change_dir_index
 * 返回值：void
 ************************************************************************************************************************************/
void user_function(int *n,int *thread_exit_flag,int *continueDisplay,int *change_picture_or_video,int *change_dir_index)
{
    while (1)
    {
        get_xy();
        if (Y > 120)
        {
            //更换视频区域
            if (X <400 && Y > 120 && Y < 240)
            {
                ReplacVideo(change_picture_or_video);
            }

            // 更换照片区域
            if (X > 400 && Y > 120 && Y < 240)
            {
                ChangePictures(change_picture_or_video);
            }

            //更换视频和照片循环播放
            if (X < 400 && Y > 240 && Y < 360)
            {
                Change_picture_video(change_picture_or_video);
            }

            //更换内容区域
            if (X > 400 && Y > 240 && Y < 360)
            {
                Replace_content(change_dir_index);
            }

            //更换位置
            if (X < 400 && Y > 360)
            {
                Raplacelocation(&location_data);
            }

            //返回
            if (X > 400 && Y > 360)
            {
                *n = 0; //状态变更为0 
                *thread_exit_flag = 0; // 设置首页面启动标志
                *continueDisplay = 1;
                return ;
            }
        }
    }
    
}

/***********************************************************
 * 函数功能：更换照片
 * 函数名:void ChangePictures(int *change_picture_or_video)
 * 形参：int *change_picture_or_video
 * 返回值：void
 ***********************************************************/
void ChangePictures(int *change_picture_or_video)
{
    *change_picture_or_video = 0;
    printf("已切换为照片\n");
} 

/***********************************************************
 * 函数功能：更换视频
 * 函数名:void ReplacVideo(int *change_picture_or_video)
 * 形参：int *change_picture_or_video
 * 返回值：void
 ***********************************************************/
void ReplacVideo(int *change_picture_or_video)
{
    *change_picture_or_video = 1;
    printf("已被更换为视频\n");
}

/***********************************************************
 * 函数功能：更换视频和照片循环
 * 函数名:void Change_picture_video(int *change_picture_or_video)
 * 形参：int *change_picture_or_video
 * 返回值：void
 ***********************************************************/
void Change_picture_video(int *change_picture_or_video)
{
    *change_picture_or_video = 2;
    printf("已被切换为视频和照片循环\n");
}

//更换位置
void Raplacelocation(int *location_data)
{
    show_change_location();
    while (1)
    {
        get_xy();

        //第一行
        //返回
        if (X < 100 && Y < 120)
        {   
            lcd_init();
            show_bmp("user.bmp");
            return;
        }

        //广东省
        if (X > 100 && X < 200 && Y < 120)
        {   
            *location_data = 1;
        }
        
        //云南省
        if (X > 200 && X < 300 && Y < 120)
        {
            *location_data = 2;
        }
        
        //广西省
        if (X > 300 && X < 400 && Y < 120)
        {
            *location_data = 3;
        }

        //浙江省
        if (X > 400 && X < 500 && Y < 120)
        {
            *location_data = 4;
        }

        //江西省
        if (X > 500 && X < 600 && Y < 120)
        {
            *location_data = 5;
        }

        //湖北省
        if (X > 600 && X < 700 && Y < 120)
        {
            *location_data = 6;
        }

        //湖南省
        if (X > 700 && X <800 && Y <120)
        {
            *location_data = 7;
        }

        //第二行
        //江苏省
        if (X < 100 && Y > 120 && Y < 240 && Y >120)
        {   
            *location_data  = 8;
        }

        //四川省
        if (X > 100 && X < 200 &&  Y > 120 && Y < 240)
        {   
            *location_data  = 9;
        }
        
        //海南省
        if (X > 200 && X < 300 &&  Y > 120 && Y < 240)
        {
            *location_data  = 10;
        }
        
        //福建省
        if (X > 300 && X < 400 &&  Y > 120 && Y < 240)
        {
            *location_data  = 11;
        }

        //青海省
        if (X > 400 && X < 500 &&  Y > 120 && Y < 240)
        {
            *location_data  = 12;
        }

        //安徽省
        if (X > 500 && X < 600 &&  Y > 120 && Y < 240)
        {
            *location_data  = 13;
        }

        //河南省
        if (X > 600 && X < 700 &&  Y > 120 && Y < 240)
        {
            *location_data  = 14;
        }

        //陕西省
        if (X > 700 && X <800 &&  Y > 120 && Y < 240)
        {
            *location_data  = 15;
        }

        //第三行
        //山西省
        if (X < 100 && Y > 120 && Y > 240 && Y < 360)
        {   
            *location_data  = 16;
        }

        //山东省
        if (X > 100 && X < 200 &&  Y > 240 && Y < 360)
        {   
            *location_data  = 17;
        }
        
        //河南省
        if (X > 200 && X < 300 && Y > 240 && Y < 360)
        {
            *location_data  = 18;
        }
        
        //河北省
        if (X > 300 && X < 400 && Y > 240 && Y < 360)
        {
            *location_data  = 19;
        }

        //北京市
        if (X > 400 && X < 500 && Y > 240 && Y < 360)
        {
            *location_data  = 20;
        }

        //天津市
        if (X > 500 && X < 600 && Y > 240 && Y < 360)
        {
            *location_data  = 21;
        }

        //上海市
        if (X > 600 && X < 700 && Y > 240 && Y < 360)
        {
             *location_data  = 22;
        }

        //重庆市
        if (X > 700 && X <800 && Y > 240 && Y < 360)
        {
             *location_data  = 23;
        }

        //第四行
        //黑龙江省
        if (X < 100 && Y > 120 && Y > 360)
        {   
             *location_data  = 24;
        }

        //吉林省
        if (X > 100 && X < 200 && Y > 360)
        {   
            *location_data  = 25;
        }
        
        //辽宁省
        if (X > 200 && X < 300 && Y > 360)
        {
            *location_data  = 26;
        }
        
        //内蒙古
        if (X > 300 && X < 400 && Y > 360)
        {
            *location_data  = 27;
        }

        //新疆
        if (X > 400 && X < 500 && Y > 360)
        {
            *location_data  = 28;
        }

        //西藏
        if (X > 500 && X < 600 && Y > 360)
        {
            *location_data  = 29;
        }

        //宁夏
        if (X > 600 && X < 700 && Y > 360)
        {
            *location_data  = 30;
        }

        //贵州省
        if (X > 700 && X <800 && Y > 360)
        {
            *location_data  = 31;
        }

    }
    
    
}

/***********************************************************
 * 函数功能：更换广告内容
 * 函数名:void Replace_content(int *change_dir_index)
 * 形参：int *change_dir_index
 * 返回值：void
 ***********************************************************/
void Replace_content(int *change_dir_index)
{
    if (*change_dir_index == 0)
    {
        *change_dir_index = 1;
    }
    else
    {
        *change_dir_index = 0;
    }
    
    
}


//更换时间
// void RaplaceTime()
// {
//     change_time = 1;
// }
